﻿using SwitUtil;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SwitBusiness
{
    class DefaultSwitch:SwitchStrategy
    {
        TelnetConnection tc;
        
        /// <summary>
        /// Switche bağlanmanı sağlar.
        /// </summary>
        /// <returns>Bağlandıysa True bağlanamzsa False Dönecektir.</returns>
        public override bool ConnectServer()
        {
            ConnectionStatus = false;
            tc = new TelnetConnection(ConnectionSwitch.IP, ConnectionSwitch.Port);
            string s = tc.Login(ConnectionSwitch.UserName, ConnectionSwitch.Password, 500);

            string prompt = s.TrimEnd();
            prompt = s.Substring(prompt.Length - 1, 1);
            if (prompt == "$" || prompt == ">" || prompt == "#") //Login için username ve password girdikten sonra doğru
            {                                                     //ise ekran çıktısı bu üçünden biri ile bitmelidir.
            
                ConnectionStatus = true;
            }  

            return ConnectionStatus;
        }
        /// <summary>
        /// Gerekli Kodu girdikten sonra Statuse ekrandaki çıktıyı alıyoruz.
        /// </summary>
        public override void CheckStatus()
        {
            if (ConnectionStatus)
            {
                
                String prompt = "sh int statu";
                tc.WriteLine(prompt);
                Status = tc.Read();
            }
            else
            {
                Status = string.Format("There is no connection to ({0})!", ConnectionSwitch.Name);
            }
        }
    }
}
